home *** CD-ROM | disk | FTP | other *** search
- property pNumberOfCards, pCards
-
- on new me
- pCards = mInitDeck()
- mShuffle()
- pNumberOfCards = me.mCountCards()
- return me
- end
-
- on mInitDeck me
- deck = []
- repeat with rank in [#ace, #two, #three, #four, #five, #six, #seven, #eight, #nine, #ten, #jack, #queen, #king]
- repeat with suit in [#hearts, #diamonds, #clubs, #spades]
- deck.add(mInitCard(me, rank, suit))
- end repeat
- end repeat
- return deck
- end
-
- on mInitCard me, arank, asuit
- return new(script("card"), arank, asuit)
- end
-
- on mShuffle me
- unshuffledCards = pCards.duplicate()
- shuffledCards = []
- the randomSeed = (random(the ticks) + random(the ticks)) * random(the ticks) / random(100)
- repeat while unshuffledCards.count > 0
- tempVar = unshuffledCards[random(unshuffledCards.count)]
- shuffledCards.add(tempVar)
- unshuffledCards.deleteOne(tempVar)
- end repeat
- pCards = shuffledCards
- end
-
- on mCountCards me
- return pCards.count
- end
-
- on mDrawCard me, fromWhere
- if not voidp(fromWhere) then
- if ilk(fromWhere, #symbol) then
- if fromWhere = #top then
- return pCards[1]
- else
- if fromWhere = #random then
- the randomSeed = (random(the ticks) + random(the ticks)) * random(the ticks) / random(100)
- return pCards[random(pCards.count)]
- else
- if fromWhere = #bottom then
- return pCards[pCards.count]
- end if
- end if
- end if
- else
- if ilk(fromWhere, #integer) then
- if (fromWhere > 0) and (fromWhere <= pCards.count) then
- return pCards[fromWhere]
- else
- alert("Out of Range")
- end if
- end if
- end if
- else
- alert("wrong data type")
- end if
- end
-
- on mRemoveFromDeck me, cardToRemove
- if ilk(cardToRemove, #object) then
- pCards.deleteOne(cardToRemove)
- else
- if ilk(cardToRemove, #integer) then
- pCards.deleteAt(cardToRemove)
- end if
- end if
- end
-
- on mAddCardToDeck me, cardToAdd
- pCards.add(cardToAdd)
- end
-
- on mGetPosInDeck me, cardToFindPos
- return pCards.findPos(cardToFindPos)
- end
-